/*
 * Copyright Codeplay Software Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use these files except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// DO NOT MODIFY BY HAND
// This file was automatically generated by generate_matmul_tests.py.
// Results calculated using Tensorflow v1.12.0.

#include <gtest/gtest.h>
#include <vector>

#include "test/matmul/fixture.h"
#include "test/types/kernel_data_types.h"
#include "test/types/to_gtest_types.h"

using DataTypeList = sycldnn::types::KernelDataTypes;
using GTestTypeList = sycldnn::types::ToGTestTypes<DataTypeList>::type;

template <typename DataType>
using MatmulBatch1Beta0TrueTrue = MatmulFixture<DataType, true, true>;
TYPED_TEST_SUITE(MatmulBatch1Beta0TrueTrue, GTestTypeList);
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M14xK14xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12845.,  30877.,  48909.,  66941.,  84973.,  103005., 121037., 139069.,
      157101., 175133., 193165., 211197., 229229., 247261., 12950.,  31178.,
      49406.,  67634.,  85862.,  104090., 122318., 140546., 158774., 177002.,
      195230., 213458., 231686., 249914., 13055.,  31479.,  49903.,  68327.,
      86751.,  105175., 123599., 142023., 160447., 178871., 197295., 215719.,
      234143., 252567., 13160.,  31780.,  50400.,  69020.,  87640.,  106260.,
      124880., 143500., 162120., 180740., 199360., 217980., 236600., 255220.,
      13265.,  32081.,  50897.,  69713.,  88529.,  107345., 126161., 144977.,
      163793., 182609., 201425., 220241., 239057., 257873., 13370.,  32382.,
      51394.,  70406.,  89418.,  108430., 127442., 146454., 165466., 184478.,
      203490., 222502., 241514., 260526., 13475.,  32683.,  51891.,  71099.,
      90307.,  109515., 128723., 147931., 167139., 186347., 205555., 224763.,
      243971., 263179., 13580.,  32984.,  52388.,  71792.,  91196.,  110600.,
      130004., 149408., 168812., 188216., 207620., 227024., 246428., 265832.,
      13685.,  33285.,  52885.,  72485.,  92085.,  111685., 131285., 150885.,
      170485., 190085., 209685., 229285., 248885., 268485., 13790.,  33586.,
      53382.,  73178.,  92974.,  112770., 132566., 152362., 172158., 191954.,
      211750., 231546., 251342., 271138., 13895.,  33887.,  53879.,  73871.,
      93863.,  113855., 133847., 153839., 173831., 193823., 213815., 233807.,
      253799., 273791., 14000.,  34188.,  54376.,  74564.,  94752.,  114940.,
      135128., 155316., 175504., 195692., 215880., 236068., 256256., 276444.,
      14105.,  34489.,  54873.,  75257.,  95641.,  116025., 136409., 156793.,
      177177., 197561., 217945., 238329., 258713., 279097., 14210.,  34790.,
      55370.,  75950.,  96530.,  117110., 137690., 158270., 178850., 199430.,
      220010., 240590., 261170., 281750.};
  const int batches = 1;
  const int m = 14;
  const int k = 14;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M14xK14xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12845.,  30877.,  48909.,  66941.,  84973.,  103005., 121037., 139069.,
      157101., 175133., 193165., 211197., 229229., 247261., 265293., 12950.,
      31178.,  49406.,  67634.,  85862.,  104090., 122318., 140546., 158774.,
      177002., 195230., 213458., 231686., 249914., 268142., 13055.,  31479.,
      49903.,  68327.,  86751.,  105175., 123599., 142023., 160447., 178871.,
      197295., 215719., 234143., 252567., 270991., 13160.,  31780.,  50400.,
      69020.,  87640.,  106260., 124880., 143500., 162120., 180740., 199360.,
      217980., 236600., 255220., 273840., 13265.,  32081.,  50897.,  69713.,
      88529.,  107345., 126161., 144977., 163793., 182609., 201425., 220241.,
      239057., 257873., 276689., 13370.,  32382.,  51394.,  70406.,  89418.,
      108430., 127442., 146454., 165466., 184478., 203490., 222502., 241514.,
      260526., 279538., 13475.,  32683.,  51891.,  71099.,  90307.,  109515.,
      128723., 147931., 167139., 186347., 205555., 224763., 243971., 263179.,
      282387., 13580.,  32984.,  52388.,  71792.,  91196.,  110600., 130004.,
      149408., 168812., 188216., 207620., 227024., 246428., 265832., 285236.,
      13685.,  33285.,  52885.,  72485.,  92085.,  111685., 131285., 150885.,
      170485., 190085., 209685., 229285., 248885., 268485., 288085., 13790.,
      33586.,  53382.,  73178.,  92974.,  112770., 132566., 152362., 172158.,
      191954., 211750., 231546., 251342., 271138., 290934., 13895.,  33887.,
      53879.,  73871.,  93863.,  113855., 133847., 153839., 173831., 193823.,
      213815., 233807., 253799., 273791., 293783., 14000.,  34188.,  54376.,
      74564.,  94752.,  114940., 135128., 155316., 175504., 195692., 215880.,
      236068., 256256., 276444., 296632., 14105.,  34489.,  54873.,  75257.,
      95641.,  116025., 136409., 156793., 177177., 197561., 217945., 238329.,
      258713., 279097., 299481., 14210.,  34790.,  55370.,  75950.,  96530.,
      117110., 137690., 158270., 178850., 199430., 220010., 240590., 261170.,
      281750., 302330.};
  const int batches = 1;
  const int m = 14;
  const int k = 14;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M14xK14xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12845.,  30877.,  48909.,  66941.,  84973.,  103005., 121037., 139069.,
      157101., 175133., 193165., 211197., 229229., 247261., 265293., 283325.,
      12950.,  31178.,  49406.,  67634.,  85862.,  104090., 122318., 140546.,
      158774., 177002., 195230., 213458., 231686., 249914., 268142., 286370.,
      13055.,  31479.,  49903.,  68327.,  86751.,  105175., 123599., 142023.,
      160447., 178871., 197295., 215719., 234143., 252567., 270991., 289415.,
      13160.,  31780.,  50400.,  69020.,  87640.,  106260., 124880., 143500.,
      162120., 180740., 199360., 217980., 236600., 255220., 273840., 292460.,
      13265.,  32081.,  50897.,  69713.,  88529.,  107345., 126161., 144977.,
      163793., 182609., 201425., 220241., 239057., 257873., 276689., 295505.,
      13370.,  32382.,  51394.,  70406.,  89418.,  108430., 127442., 146454.,
      165466., 184478., 203490., 222502., 241514., 260526., 279538., 298550.,
      13475.,  32683.,  51891.,  71099.,  90307.,  109515., 128723., 147931.,
      167139., 186347., 205555., 224763., 243971., 263179., 282387., 301595.,
      13580.,  32984.,  52388.,  71792.,  91196.,  110600., 130004., 149408.,
      168812., 188216., 207620., 227024., 246428., 265832., 285236., 304640.,
      13685.,  33285.,  52885.,  72485.,  92085.,  111685., 131285., 150885.,
      170485., 190085., 209685., 229285., 248885., 268485., 288085., 307685.,
      13790.,  33586.,  53382.,  73178.,  92974.,  112770., 132566., 152362.,
      172158., 191954., 211750., 231546., 251342., 271138., 290934., 310730.,
      13895.,  33887.,  53879.,  73871.,  93863.,  113855., 133847., 153839.,
      173831., 193823., 213815., 233807., 253799., 273791., 293783., 313775.,
      14000.,  34188.,  54376.,  74564.,  94752.,  114940., 135128., 155316.,
      175504., 195692., 215880., 236068., 256256., 276444., 296632., 316820.,
      14105.,  34489.,  54873.,  75257.,  95641.,  116025., 136409., 156793.,
      177177., 197561., 217945., 238329., 258713., 279097., 299481., 319865.,
      14210.,  34790.,  55370.,  75950.,  96530.,  117110., 137690., 158270.,
      178850., 199430., 220010., 240590., 261170., 281750., 302330., 322910.};
  const int batches = 1;
  const int m = 14;
  const int k = 14;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M14xK15xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15800.,  38075.,  60350.,  82625.,  104900., 127175., 149450., 171725.,
      194000., 216275., 238550., 260825., 283100., 305375., 15920.,  38420.,
      60920.,  83420.,  105920., 128420., 150920., 173420., 195920., 218420.,
      240920., 263420., 285920., 308420., 16040.,  38765.,  61490.,  84215.,
      106940., 129665., 152390., 175115., 197840., 220565., 243290., 266015.,
      288740., 311465., 16160.,  39110.,  62060.,  85010.,  107960., 130910.,
      153860., 176810., 199760., 222710., 245660., 268610., 291560., 314510.,
      16280.,  39455.,  62630.,  85805.,  108980., 132155., 155330., 178505.,
      201680., 224855., 248030., 271205., 294380., 317555., 16400.,  39800.,
      63200.,  86600.,  110000., 133400., 156800., 180200., 203600., 227000.,
      250400., 273800., 297200., 320600., 16520.,  40145.,  63770.,  87395.,
      111020., 134645., 158270., 181895., 205520., 229145., 252770., 276395.,
      300020., 323645., 16640.,  40490.,  64340.,  88190.,  112040., 135890.,
      159740., 183590., 207440., 231290., 255140., 278990., 302840., 326690.,
      16760.,  40835.,  64910.,  88985.,  113060., 137135., 161210., 185285.,
      209360., 233435., 257510., 281585., 305660., 329735., 16880.,  41180.,
      65480.,  89780.,  114080., 138380., 162680., 186980., 211280., 235580.,
      259880., 284180., 308480., 332780., 17000.,  41525.,  66050.,  90575.,
      115100., 139625., 164150., 188675., 213200., 237725., 262250., 286775.,
      311300., 335825., 17120.,  41870.,  66620.,  91370.,  116120., 140870.,
      165620., 190370., 215120., 239870., 264620., 289370., 314120., 338870.,
      17240.,  42215.,  67190.,  92165.,  117140., 142115., 167090., 192065.,
      217040., 242015., 266990., 291965., 316940., 341915., 17360.,  42560.,
      67760.,  92960.,  118160., 143360., 168560., 193760., 218960., 244160.,
      269360., 294560., 319760., 344960.};
  const int batches = 1;
  const int m = 14;
  const int k = 15;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M14xK15xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15800.,  38075.,  60350.,  82625.,  104900., 127175., 149450., 171725.,
      194000., 216275., 238550., 260825., 283100., 305375., 327650., 15920.,
      38420.,  60920.,  83420.,  105920., 128420., 150920., 173420., 195920.,
      218420., 240920., 263420., 285920., 308420., 330920., 16040.,  38765.,
      61490.,  84215.,  106940., 129665., 152390., 175115., 197840., 220565.,
      243290., 266015., 288740., 311465., 334190., 16160.,  39110.,  62060.,
      85010.,  107960., 130910., 153860., 176810., 199760., 222710., 245660.,
      268610., 291560., 314510., 337460., 16280.,  39455.,  62630.,  85805.,
      108980., 132155., 155330., 178505., 201680., 224855., 248030., 271205.,
      294380., 317555., 340730., 16400.,  39800.,  63200.,  86600.,  110000.,
      133400., 156800., 180200., 203600., 227000., 250400., 273800., 297200.,
      320600., 344000., 16520.,  40145.,  63770.,  87395.,  111020., 134645.,
      158270., 181895., 205520., 229145., 252770., 276395., 300020., 323645.,
      347270., 16640.,  40490.,  64340.,  88190.,  112040., 135890., 159740.,
      183590., 207440., 231290., 255140., 278990., 302840., 326690., 350540.,
      16760.,  40835.,  64910.,  88985.,  113060., 137135., 161210., 185285.,
      209360., 233435., 257510., 281585., 305660., 329735., 353810., 16880.,
      41180.,  65480.,  89780.,  114080., 138380., 162680., 186980., 211280.,
      235580., 259880., 284180., 308480., 332780., 357080., 17000.,  41525.,
      66050.,  90575.,  115100., 139625., 164150., 188675., 213200., 237725.,
      262250., 286775., 311300., 335825., 360350., 17120.,  41870.,  66620.,
      91370.,  116120., 140870., 165620., 190370., 215120., 239870., 264620.,
      289370., 314120., 338870., 363620., 17240.,  42215.,  67190.,  92165.,
      117140., 142115., 167090., 192065., 217040., 242015., 266990., 291965.,
      316940., 341915., 366890., 17360.,  42560.,  67760.,  92960.,  118160.,
      143360., 168560., 193760., 218960., 244160., 269360., 294560., 319760.,
      344960., 370160.};
  const int batches = 1;
  const int m = 14;
  const int k = 15;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M14xK15xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15800.,  38075.,  60350.,  82625.,  104900., 127175., 149450., 171725.,
      194000., 216275., 238550., 260825., 283100., 305375., 327650., 349925.,
      15920.,  38420.,  60920.,  83420.,  105920., 128420., 150920., 173420.,
      195920., 218420., 240920., 263420., 285920., 308420., 330920., 353420.,
      16040.,  38765.,  61490.,  84215.,  106940., 129665., 152390., 175115.,
      197840., 220565., 243290., 266015., 288740., 311465., 334190., 356915.,
      16160.,  39110.,  62060.,  85010.,  107960., 130910., 153860., 176810.,
      199760., 222710., 245660., 268610., 291560., 314510., 337460., 360410.,
      16280.,  39455.,  62630.,  85805.,  108980., 132155., 155330., 178505.,
      201680., 224855., 248030., 271205., 294380., 317555., 340730., 363905.,
      16400.,  39800.,  63200.,  86600.,  110000., 133400., 156800., 180200.,
      203600., 227000., 250400., 273800., 297200., 320600., 344000., 367400.,
      16520.,  40145.,  63770.,  87395.,  111020., 134645., 158270., 181895.,
      205520., 229145., 252770., 276395., 300020., 323645., 347270., 370895.,
      16640.,  40490.,  64340.,  88190.,  112040., 135890., 159740., 183590.,
      207440., 231290., 255140., 278990., 302840., 326690., 350540., 374390.,
      16760.,  40835.,  64910.,  88985.,  113060., 137135., 161210., 185285.,
      209360., 233435., 257510., 281585., 305660., 329735., 353810., 377885.,
      16880.,  41180.,  65480.,  89780.,  114080., 138380., 162680., 186980.,
      211280., 235580., 259880., 284180., 308480., 332780., 357080., 381380.,
      17000.,  41525.,  66050.,  90575.,  115100., 139625., 164150., 188675.,
      213200., 237725., 262250., 286775., 311300., 335825., 360350., 384875.,
      17120.,  41870.,  66620.,  91370.,  116120., 140870., 165620., 190370.,
      215120., 239870., 264620., 289370., 314120., 338870., 363620., 388370.,
      17240.,  42215.,  67190.,  92165.,  117140., 142115., 167090., 192065.,
      217040., 242015., 266990., 291965., 316940., 341915., 366890., 391865.,
      17360.,  42560.,  67760.,  92960.,  118160., 143360., 168560., 193760.,
      218960., 244160., 269360., 294560., 319760., 344960., 370160., 395360.};
  const int batches = 1;
  const int m = 14;
  const int k = 15;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M14xK16xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19176.,  46312.,  73448.,  100584., 127720., 154856., 181992., 209128.,
      236264., 263400., 290536., 317672., 344808., 371944., 19312.,  46704.,
      74096.,  101488., 128880., 156272., 183664., 211056., 238448., 265840.,
      293232., 320624., 348016., 375408., 19448.,  47096.,  74744.,  102392.,
      130040., 157688., 185336., 212984., 240632., 268280., 295928., 323576.,
      351224., 378872., 19584.,  47488.,  75392.,  103296., 131200., 159104.,
      187008., 214912., 242816., 270720., 298624., 326528., 354432., 382336.,
      19720.,  47880.,  76040.,  104200., 132360., 160520., 188680., 216840.,
      245000., 273160., 301320., 329480., 357640., 385800., 19856.,  48272.,
      76688.,  105104., 133520., 161936., 190352., 218768., 247184., 275600.,
      304016., 332432., 360848., 389264., 19992.,  48664.,  77336.,  106008.,
      134680., 163352., 192024., 220696., 249368., 278040., 306712., 335384.,
      364056., 392728., 20128.,  49056.,  77984.,  106912., 135840., 164768.,
      193696., 222624., 251552., 280480., 309408., 338336., 367264., 396192.,
      20264.,  49448.,  78632.,  107816., 137000., 166184., 195368., 224552.,
      253736., 282920., 312104., 341288., 370472., 399656., 20400.,  49840.,
      79280.,  108720., 138160., 167600., 197040., 226480., 255920., 285360.,
      314800., 344240., 373680., 403120., 20536.,  50232.,  79928.,  109624.,
      139320., 169016., 198712., 228408., 258104., 287800., 317496., 347192.,
      376888., 406584., 20672.,  50624.,  80576.,  110528., 140480., 170432.,
      200384., 230336., 260288., 290240., 320192., 350144., 380096., 410048.,
      20808.,  51016.,  81224.,  111432., 141640., 171848., 202056., 232264.,
      262472., 292680., 322888., 353096., 383304., 413512., 20944.,  51408.,
      81872.,  112336., 142800., 173264., 203728., 234192., 264656., 295120.,
      325584., 356048., 386512., 416976.};
  const int batches = 1;
  const int m = 14;
  const int k = 16;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M14xK16xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19176.,  46312.,  73448.,  100584., 127720., 154856., 181992., 209128.,
      236264., 263400., 290536., 317672., 344808., 371944., 399080., 19312.,
      46704.,  74096.,  101488., 128880., 156272., 183664., 211056., 238448.,
      265840., 293232., 320624., 348016., 375408., 402800., 19448.,  47096.,
      74744.,  102392., 130040., 157688., 185336., 212984., 240632., 268280.,
      295928., 323576., 351224., 378872., 406520., 19584.,  47488.,  75392.,
      103296., 131200., 159104., 187008., 214912., 242816., 270720., 298624.,
      326528., 354432., 382336., 410240., 19720.,  47880.,  76040.,  104200.,
      132360., 160520., 188680., 216840., 245000., 273160., 301320., 329480.,
      357640., 385800., 413960., 19856.,  48272.,  76688.,  105104., 133520.,
      161936., 190352., 218768., 247184., 275600., 304016., 332432., 360848.,
      389264., 417680., 19992.,  48664.,  77336.,  106008., 134680., 163352.,
      192024., 220696., 249368., 278040., 306712., 335384., 364056., 392728.,
      421400., 20128.,  49056.,  77984.,  106912., 135840., 164768., 193696.,
      222624., 251552., 280480., 309408., 338336., 367264., 396192., 425120.,
      20264.,  49448.,  78632.,  107816., 137000., 166184., 195368., 224552.,
      253736., 282920., 312104., 341288., 370472., 399656., 428840., 20400.,
      49840.,  79280.,  108720., 138160., 167600., 197040., 226480., 255920.,
      285360., 314800., 344240., 373680., 403120., 432560., 20536.,  50232.,
      79928.,  109624., 139320., 169016., 198712., 228408., 258104., 287800.,
      317496., 347192., 376888., 406584., 436280., 20672.,  50624.,  80576.,
      110528., 140480., 170432., 200384., 230336., 260288., 290240., 320192.,
      350144., 380096., 410048., 440000., 20808.,  51016.,  81224.,  111432.,
      141640., 171848., 202056., 232264., 262472., 292680., 322888., 353096.,
      383304., 413512., 443720., 20944.,  51408.,  81872.,  112336., 142800.,
      173264., 203728., 234192., 264656., 295120., 325584., 356048., 386512.,
      416976., 447440.};
  const int batches = 1;
  const int m = 14;
  const int k = 16;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M14xK16xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19176.,  46312.,  73448.,  100584., 127720., 154856., 181992., 209128.,
      236264., 263400., 290536., 317672., 344808., 371944., 399080., 426216.,
      19312.,  46704.,  74096.,  101488., 128880., 156272., 183664., 211056.,
      238448., 265840., 293232., 320624., 348016., 375408., 402800., 430192.,
      19448.,  47096.,  74744.,  102392., 130040., 157688., 185336., 212984.,
      240632., 268280., 295928., 323576., 351224., 378872., 406520., 434168.,
      19584.,  47488.,  75392.,  103296., 131200., 159104., 187008., 214912.,
      242816., 270720., 298624., 326528., 354432., 382336., 410240., 438144.,
      19720.,  47880.,  76040.,  104200., 132360., 160520., 188680., 216840.,
      245000., 273160., 301320., 329480., 357640., 385800., 413960., 442120.,
      19856.,  48272.,  76688.,  105104., 133520., 161936., 190352., 218768.,
      247184., 275600., 304016., 332432., 360848., 389264., 417680., 446096.,
      19992.,  48664.,  77336.,  106008., 134680., 163352., 192024., 220696.,
      249368., 278040., 306712., 335384., 364056., 392728., 421400., 450072.,
      20128.,  49056.,  77984.,  106912., 135840., 164768., 193696., 222624.,
      251552., 280480., 309408., 338336., 367264., 396192., 425120., 454048.,
      20264.,  49448.,  78632.,  107816., 137000., 166184., 195368., 224552.,
      253736., 282920., 312104., 341288., 370472., 399656., 428840., 458024.,
      20400.,  49840.,  79280.,  108720., 138160., 167600., 197040., 226480.,
      255920., 285360., 314800., 344240., 373680., 403120., 432560., 462000.,
      20536.,  50232.,  79928.,  109624., 139320., 169016., 198712., 228408.,
      258104., 287800., 317496., 347192., 376888., 406584., 436280., 465976.,
      20672.,  50624.,  80576.,  110528., 140480., 170432., 200384., 230336.,
      260288., 290240., 320192., 350144., 380096., 410048., 440000., 469952.,
      20808.,  51016.,  81224.,  111432., 141640., 171848., 202056., 232264.,
      262472., 292680., 322888., 353096., 383304., 413512., 443720., 473928.,
      20944.,  51408.,  81872.,  112336., 142800., 173264., 203728., 234192.,
      264656., 295120., 325584., 356048., 386512., 416976., 447440., 477904.};
  const int batches = 1;
  const int m = 14;
  const int k = 16;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M15xK14xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13755.,  33061.,  52367.,  71673.,  90979.,  110285., 129591., 148897.,
      168203., 187509., 206815., 226121., 245427., 264733., 13860.,  33362.,
      52864.,  72366.,  91868.,  111370., 130872., 150374., 169876., 189378.,
      208880., 228382., 247884., 267386., 13965.,  33663.,  53361.,  73059.,
      92757.,  112455., 132153., 151851., 171549., 191247., 210945., 230643.,
      250341., 270039., 14070.,  33964.,  53858.,  73752.,  93646.,  113540.,
      133434., 153328., 173222., 193116., 213010., 232904., 252798., 272692.,
      14175.,  34265.,  54355.,  74445.,  94535.,  114625., 134715., 154805.,
      174895., 194985., 215075., 235165., 255255., 275345., 14280.,  34566.,
      54852.,  75138.,  95424.,  115710., 135996., 156282., 176568., 196854.,
      217140., 237426., 257712., 277998., 14385.,  34867.,  55349.,  75831.,
      96313.,  116795., 137277., 157759., 178241., 198723., 219205., 239687.,
      260169., 280651., 14490.,  35168.,  55846.,  76524.,  97202.,  117880.,
      138558., 159236., 179914., 200592., 221270., 241948., 262626., 283304.,
      14595.,  35469.,  56343.,  77217.,  98091.,  118965., 139839., 160713.,
      181587., 202461., 223335., 244209., 265083., 285957., 14700.,  35770.,
      56840.,  77910.,  98980.,  120050., 141120., 162190., 183260., 204330.,
      225400., 246470., 267540., 288610., 14805.,  36071.,  57337.,  78603.,
      99869.,  121135., 142401., 163667., 184933., 206199., 227465., 248731.,
      269997., 291263., 14910.,  36372.,  57834.,  79296.,  100758., 122220.,
      143682., 165144., 186606., 208068., 229530., 250992., 272454., 293916.,
      15015.,  36673.,  58331.,  79989.,  101647., 123305., 144963., 166621.,
      188279., 209937., 231595., 253253., 274911., 296569., 15120.,  36974.,
      58828.,  80682.,  102536., 124390., 146244., 168098., 189952., 211806.,
      233660., 255514., 277368., 299222., 15225.,  37275.,  59325.,  81375.,
      103425., 125475., 147525., 169575., 191625., 213675., 235725., 257775.,
      279825., 301875.};
  const int batches = 1;
  const int m = 15;
  const int k = 14;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M15xK14xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13755.,  33061.,  52367.,  71673.,  90979.,  110285., 129591., 148897.,
      168203., 187509., 206815., 226121., 245427., 264733., 284039., 13860.,
      33362.,  52864.,  72366.,  91868.,  111370., 130872., 150374., 169876.,
      189378., 208880., 228382., 247884., 267386., 286888., 13965.,  33663.,
      53361.,  73059.,  92757.,  112455., 132153., 151851., 171549., 191247.,
      210945., 230643., 250341., 270039., 289737., 14070.,  33964.,  53858.,
      73752.,  93646.,  113540., 133434., 153328., 173222., 193116., 213010.,
      232904., 252798., 272692., 292586., 14175.,  34265.,  54355.,  74445.,
      94535.,  114625., 134715., 154805., 174895., 194985., 215075., 235165.,
      255255., 275345., 295435., 14280.,  34566.,  54852.,  75138.,  95424.,
      115710., 135996., 156282., 176568., 196854., 217140., 237426., 257712.,
      277998., 298284., 14385.,  34867.,  55349.,  75831.,  96313.,  116795.,
      137277., 157759., 178241., 198723., 219205., 239687., 260169., 280651.,
      301133., 14490.,  35168.,  55846.,  76524.,  97202.,  117880., 138558.,
      159236., 179914., 200592., 221270., 241948., 262626., 283304., 303982.,
      14595.,  35469.,  56343.,  77217.,  98091.,  118965., 139839., 160713.,
      181587., 202461., 223335., 244209., 265083., 285957., 306831., 14700.,
      35770.,  56840.,  77910.,  98980.,  120050., 141120., 162190., 183260.,
      204330., 225400., 246470., 267540., 288610., 309680., 14805.,  36071.,
      57337.,  78603.,  99869.,  121135., 142401., 163667., 184933., 206199.,
      227465., 248731., 269997., 291263., 312529., 14910.,  36372.,  57834.,
      79296.,  100758., 122220., 143682., 165144., 186606., 208068., 229530.,
      250992., 272454., 293916., 315378., 15015.,  36673.,  58331.,  79989.,
      101647., 123305., 144963., 166621., 188279., 209937., 231595., 253253.,
      274911., 296569., 318227., 15120.,  36974.,  58828.,  80682.,  102536.,
      124390., 146244., 168098., 189952., 211806., 233660., 255514., 277368.,
      299222., 321076., 15225.,  37275.,  59325.,  81375.,  103425., 125475.,
      147525., 169575., 191625., 213675., 235725., 257775., 279825., 301875.,
      323925.};
  const int batches = 1;
  const int m = 15;
  const int k = 14;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M15xK14xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13755.,  33061.,  52367.,  71673.,  90979.,  110285., 129591., 148897.,
      168203., 187509., 206815., 226121., 245427., 264733., 284039., 303345.,
      13860.,  33362.,  52864.,  72366.,  91868.,  111370., 130872., 150374.,
      169876., 189378., 208880., 228382., 247884., 267386., 286888., 306390.,
      13965.,  33663.,  53361.,  73059.,  92757.,  112455., 132153., 151851.,
      171549., 191247., 210945., 230643., 250341., 270039., 289737., 309435.,
      14070.,  33964.,  53858.,  73752.,  93646.,  113540., 133434., 153328.,
      173222., 193116., 213010., 232904., 252798., 272692., 292586., 312480.,
      14175.,  34265.,  54355.,  74445.,  94535.,  114625., 134715., 154805.,
      174895., 194985., 215075., 235165., 255255., 275345., 295435., 315525.,
      14280.,  34566.,  54852.,  75138.,  95424.,  115710., 135996., 156282.,
      176568., 196854., 217140., 237426., 257712., 277998., 298284., 318570.,
      14385.,  34867.,  55349.,  75831.,  96313.,  116795., 137277., 157759.,
      178241., 198723., 219205., 239687., 260169., 280651., 301133., 321615.,
      14490.,  35168.,  55846.,  76524.,  97202.,  117880., 138558., 159236.,
      179914., 200592., 221270., 241948., 262626., 283304., 303982., 324660.,
      14595.,  35469.,  56343.,  77217.,  98091.,  118965., 139839., 160713.,
      181587., 202461., 223335., 244209., 265083., 285957., 306831., 327705.,
      14700.,  35770.,  56840.,  77910.,  98980.,  120050., 141120., 162190.,
      183260., 204330., 225400., 246470., 267540., 288610., 309680., 330750.,
      14805.,  36071.,  57337.,  78603.,  99869.,  121135., 142401., 163667.,
      184933., 206199., 227465., 248731., 269997., 291263., 312529., 333795.,
      14910.,  36372.,  57834.,  79296.,  100758., 122220., 143682., 165144.,
      186606., 208068., 229530., 250992., 272454., 293916., 315378., 336840.,
      15015.,  36673.,  58331.,  79989.,  101647., 123305., 144963., 166621.,
      188279., 209937., 231595., 253253., 274911., 296569., 318227., 339885.,
      15120.,  36974.,  58828.,  80682.,  102536., 124390., 146244., 168098.,
      189952., 211806., 233660., 255514., 277368., 299222., 321076., 342930.,
      15225.,  37275.,  59325.,  81375.,  103425., 125475., 147525., 169575.,
      191625., 213675., 235725., 257775., 279825., 301875., 323925., 345975.};
  const int batches = 1;
  const int m = 15;
  const int k = 14;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M15xK15xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      16920.,  40770.,  64620.,  88470.,  112320., 136170., 160020., 183870.,
      207720., 231570., 255420., 279270., 303120., 326970., 17040.,  41115.,
      65190.,  89265.,  113340., 137415., 161490., 185565., 209640., 233715.,
      257790., 281865., 305940., 330015., 17160.,  41460.,  65760.,  90060.,
      114360., 138660., 162960., 187260., 211560., 235860., 260160., 284460.,
      308760., 333060., 17280.,  41805.,  66330.,  90855.,  115380., 139905.,
      164430., 188955., 213480., 238005., 262530., 287055., 311580., 336105.,
      17400.,  42150.,  66900.,  91650.,  116400., 141150., 165900., 190650.,
      215400., 240150., 264900., 289650., 314400., 339150., 17520.,  42495.,
      67470.,  92445.,  117420., 142395., 167370., 192345., 217320., 242295.,
      267270., 292245., 317220., 342195., 17640.,  42840.,  68040.,  93240.,
      118440., 143640., 168840., 194040., 219240., 244440., 269640., 294840.,
      320040., 345240., 17760.,  43185.,  68610.,  94035.,  119460., 144885.,
      170310., 195735., 221160., 246585., 272010., 297435., 322860., 348285.,
      17880.,  43530.,  69180.,  94830.,  120480., 146130., 171780., 197430.,
      223080., 248730., 274380., 300030., 325680., 351330., 18000.,  43875.,
      69750.,  95625.,  121500., 147375., 173250., 199125., 225000., 250875.,
      276750., 302625., 328500., 354375., 18120.,  44220.,  70320.,  96420.,
      122520., 148620., 174720., 200820., 226920., 253020., 279120., 305220.,
      331320., 357420., 18240.,  44565.,  70890.,  97215.,  123540., 149865.,
      176190., 202515., 228840., 255165., 281490., 307815., 334140., 360465.,
      18360.,  44910.,  71460.,  98010.,  124560., 151110., 177660., 204210.,
      230760., 257310., 283860., 310410., 336960., 363510., 18480.,  45255.,
      72030.,  98805.,  125580., 152355., 179130., 205905., 232680., 259455.,
      286230., 313005., 339780., 366555., 18600.,  45600.,  72600.,  99600.,
      126600., 153600., 180600., 207600., 234600., 261600., 288600., 315600.,
      342600., 369600.};
  const int batches = 1;
  const int m = 15;
  const int k = 15;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M15xK15xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      16920.,  40770.,  64620.,  88470.,  112320., 136170., 160020., 183870.,
      207720., 231570., 255420., 279270., 303120., 326970., 350820., 17040.,
      41115.,  65190.,  89265.,  113340., 137415., 161490., 185565., 209640.,
      233715., 257790., 281865., 305940., 330015., 354090., 17160.,  41460.,
      65760.,  90060.,  114360., 138660., 162960., 187260., 211560., 235860.,
      260160., 284460., 308760., 333060., 357360., 17280.,  41805.,  66330.,
      90855.,  115380., 139905., 164430., 188955., 213480., 238005., 262530.,
      287055., 311580., 336105., 360630., 17400.,  42150.,  66900.,  91650.,
      116400., 141150., 165900., 190650., 215400., 240150., 264900., 289650.,
      314400., 339150., 363900., 17520.,  42495.,  67470.,  92445.,  117420.,
      142395., 167370., 192345., 217320., 242295., 267270., 292245., 317220.,
      342195., 367170., 17640.,  42840.,  68040.,  93240.,  118440., 143640.,
      168840., 194040., 219240., 244440., 269640., 294840., 320040., 345240.,
      370440., 17760.,  43185.,  68610.,  94035.,  119460., 144885., 170310.,
      195735., 221160., 246585., 272010., 297435., 322860., 348285., 373710.,
      17880.,  43530.,  69180.,  94830.,  120480., 146130., 171780., 197430.,
      223080., 248730., 274380., 300030., 325680., 351330., 376980., 18000.,
      43875.,  69750.,  95625.,  121500., 147375., 173250., 199125., 225000.,
      250875., 276750., 302625., 328500., 354375., 380250., 18120.,  44220.,
      70320.,  96420.,  122520., 148620., 174720., 200820., 226920., 253020.,
      279120., 305220., 331320., 357420., 383520., 18240.,  44565.,  70890.,
      97215.,  123540., 149865., 176190., 202515., 228840., 255165., 281490.,
      307815., 334140., 360465., 386790., 18360.,  44910.,  71460.,  98010.,
      124560., 151110., 177660., 204210., 230760., 257310., 283860., 310410.,
      336960., 363510., 390060., 18480.,  45255.,  72030.,  98805.,  125580.,
      152355., 179130., 205905., 232680., 259455., 286230., 313005., 339780.,
      366555., 393330., 18600.,  45600.,  72600.,  99600.,  126600., 153600.,
      180600., 207600., 234600., 261600., 288600., 315600., 342600., 369600.,
      396600.};
  const int batches = 1;
  const int m = 15;
  const int k = 15;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M15xK15xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      16920.,  40770.,  64620.,  88470.,  112320., 136170., 160020., 183870.,
      207720., 231570., 255420., 279270., 303120., 326970., 350820., 374670.,
      17040.,  41115.,  65190.,  89265.,  113340., 137415., 161490., 185565.,
      209640., 233715., 257790., 281865., 305940., 330015., 354090., 378165.,
      17160.,  41460.,  65760.,  90060.,  114360., 138660., 162960., 187260.,
      211560., 235860., 260160., 284460., 308760., 333060., 357360., 381660.,
      17280.,  41805.,  66330.,  90855.,  115380., 139905., 164430., 188955.,
      213480., 238005., 262530., 287055., 311580., 336105., 360630., 385155.,
      17400.,  42150.,  66900.,  91650.,  116400., 141150., 165900., 190650.,
      215400., 240150., 264900., 289650., 314400., 339150., 363900., 388650.,
      17520.,  42495.,  67470.,  92445.,  117420., 142395., 167370., 192345.,
      217320., 242295., 267270., 292245., 317220., 342195., 367170., 392145.,
      17640.,  42840.,  68040.,  93240.,  118440., 143640., 168840., 194040.,
      219240., 244440., 269640., 294840., 320040., 345240., 370440., 395640.,
      17760.,  43185.,  68610.,  94035.,  119460., 144885., 170310., 195735.,
      221160., 246585., 272010., 297435., 322860., 348285., 373710., 399135.,
      17880.,  43530.,  69180.,  94830.,  120480., 146130., 171780., 197430.,
      223080., 248730., 274380., 300030., 325680., 351330., 376980., 402630.,
      18000.,  43875.,  69750.,  95625.,  121500., 147375., 173250., 199125.,
      225000., 250875., 276750., 302625., 328500., 354375., 380250., 406125.,
      18120.,  44220.,  70320.,  96420.,  122520., 148620., 174720., 200820.,
      226920., 253020., 279120., 305220., 331320., 357420., 383520., 409620.,
      18240.,  44565.,  70890.,  97215.,  123540., 149865., 176190., 202515.,
      228840., 255165., 281490., 307815., 334140., 360465., 386790., 413115.,
      18360.,  44910.,  71460.,  98010.,  124560., 151110., 177660., 204210.,
      230760., 257310., 283860., 310410., 336960., 363510., 390060., 416610.,
      18480.,  45255.,  72030.,  98805.,  125580., 152355., 179130., 205905.,
      232680., 259455., 286230., 313005., 339780., 366555., 393330., 420105.,
      18600.,  45600.,  72600.,  99600.,  126600., 153600., 180600., 207600.,
      234600., 261600., 288600., 315600., 342600., 369600., 396600., 423600.};
  const int batches = 1;
  const int m = 15;
  const int k = 15;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M15xK16xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      20536.,  49592.,  78648.,  107704., 136760., 165816., 194872., 223928.,
      252984., 282040., 311096., 340152., 369208., 398264., 20672.,  49984.,
      79296.,  108608., 137920., 167232., 196544., 225856., 255168., 284480.,
      313792., 343104., 372416., 401728., 20808.,  50376.,  79944.,  109512.,
      139080., 168648., 198216., 227784., 257352., 286920., 316488., 346056.,
      375624., 405192., 20944.,  50768.,  80592.,  110416., 140240., 170064.,
      199888., 229712., 259536., 289360., 319184., 349008., 378832., 408656.,
      21080.,  51160.,  81240.,  111320., 141400., 171480., 201560., 231640.,
      261720., 291800., 321880., 351960., 382040., 412120., 21216.,  51552.,
      81888.,  112224., 142560., 172896., 203232., 233568., 263904., 294240.,
      324576., 354912., 385248., 415584., 21352.,  51944.,  82536.,  113128.,
      143720., 174312., 204904., 235496., 266088., 296680., 327272., 357864.,
      388456., 419048., 21488.,  52336.,  83184.,  114032., 144880., 175728.,
      206576., 237424., 268272., 299120., 329968., 360816., 391664., 422512.,
      21624.,  52728.,  83832.,  114936., 146040., 177144., 208248., 239352.,
      270456., 301560., 332664., 363768., 394872., 425976., 21760.,  53120.,
      84480.,  115840., 147200., 178560., 209920., 241280., 272640., 304000.,
      335360., 366720., 398080., 429440., 21896.,  53512.,  85128.,  116744.,
      148360., 179976., 211592., 243208., 274824., 306440., 338056., 369672.,
      401288., 432904., 22032.,  53904.,  85776.,  117648., 149520., 181392.,
      213264., 245136., 277008., 308880., 340752., 372624., 404496., 436368.,
      22168.,  54296.,  86424.,  118552., 150680., 182808., 214936., 247064.,
      279192., 311320., 343448., 375576., 407704., 439832., 22304.,  54688.,
      87072.,  119456., 151840., 184224., 216608., 248992., 281376., 313760.,
      346144., 378528., 410912., 443296., 22440.,  55080.,  87720.,  120360.,
      153000., 185640., 218280., 250920., 283560., 316200., 348840., 381480.,
      414120., 446760.};
  const int batches = 1;
  const int m = 15;
  const int k = 16;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M15xK16xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      20536.,  49592.,  78648.,  107704., 136760., 165816., 194872., 223928.,
      252984., 282040., 311096., 340152., 369208., 398264., 427320., 20672.,
      49984.,  79296.,  108608., 137920., 167232., 196544., 225856., 255168.,
      284480., 313792., 343104., 372416., 401728., 431040., 20808.,  50376.,
      79944.,  109512., 139080., 168648., 198216., 227784., 257352., 286920.,
      316488., 346056., 375624., 405192., 434760., 20944.,  50768.,  80592.,
      110416., 140240., 170064., 199888., 229712., 259536., 289360., 319184.,
      349008., 378832., 408656., 438480., 21080.,  51160.,  81240.,  111320.,
      141400., 171480., 201560., 231640., 261720., 291800., 321880., 351960.,
      382040., 412120., 442200., 21216.,  51552.,  81888.,  112224., 142560.,
      172896., 203232., 233568., 263904., 294240., 324576., 354912., 385248.,
      415584., 445920., 21352.,  51944.,  82536.,  113128., 143720., 174312.,
      204904., 235496., 266088., 296680., 327272., 357864., 388456., 419048.,
      449640., 21488.,  52336.,  83184.,  114032., 144880., 175728., 206576.,
      237424., 268272., 299120., 329968., 360816., 391664., 422512., 453360.,
      21624.,  52728.,  83832.,  114936., 146040., 177144., 208248., 239352.,
      270456., 301560., 332664., 363768., 394872., 425976., 457080., 21760.,
      53120.,  84480.,  115840., 147200., 178560., 209920., 241280., 272640.,
      304000., 335360., 366720., 398080., 429440., 460800., 21896.,  53512.,
      85128.,  116744., 148360., 179976., 211592., 243208., 274824., 306440.,
      338056., 369672., 401288., 432904., 464520., 22032.,  53904.,  85776.,
      117648., 149520., 181392., 213264., 245136., 277008., 308880., 340752.,
      372624., 404496., 436368., 468240., 22168.,  54296.,  86424.,  118552.,
      150680., 182808., 214936., 247064., 279192., 311320., 343448., 375576.,
      407704., 439832., 471960., 22304.,  54688.,  87072.,  119456., 151840.,
      184224., 216608., 248992., 281376., 313760., 346144., 378528., 410912.,
      443296., 475680., 22440.,  55080.,  87720.,  120360., 153000., 185640.,
      218280., 250920., 283560., 316200., 348840., 381480., 414120., 446760.,
      479400.};
  const int batches = 1;
  const int m = 15;
  const int k = 16;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M15xK16xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      20536.,  49592.,  78648.,  107704., 136760., 165816., 194872., 223928.,
      252984., 282040., 311096., 340152., 369208., 398264., 427320., 456376.,
      20672.,  49984.,  79296.,  108608., 137920., 167232., 196544., 225856.,
      255168., 284480., 313792., 343104., 372416., 401728., 431040., 460352.,
      20808.,  50376.,  79944.,  109512., 139080., 168648., 198216., 227784.,
      257352., 286920., 316488., 346056., 375624., 405192., 434760., 464328.,
      20944.,  50768.,  80592.,  110416., 140240., 170064., 199888., 229712.,
      259536., 289360., 319184., 349008., 378832., 408656., 438480., 468304.,
      21080.,  51160.,  81240.,  111320., 141400., 171480., 201560., 231640.,
      261720., 291800., 321880., 351960., 382040., 412120., 442200., 472280.,
      21216.,  51552.,  81888.,  112224., 142560., 172896., 203232., 233568.,
      263904., 294240., 324576., 354912., 385248., 415584., 445920., 476256.,
      21352.,  51944.,  82536.,  113128., 143720., 174312., 204904., 235496.,
      266088., 296680., 327272., 357864., 388456., 419048., 449640., 480232.,
      21488.,  52336.,  83184.,  114032., 144880., 175728., 206576., 237424.,
      268272., 299120., 329968., 360816., 391664., 422512., 453360., 484208.,
      21624.,  52728.,  83832.,  114936., 146040., 177144., 208248., 239352.,
      270456., 301560., 332664., 363768., 394872., 425976., 457080., 488184.,
      21760.,  53120.,  84480.,  115840., 147200., 178560., 209920., 241280.,
      272640., 304000., 335360., 366720., 398080., 429440., 460800., 492160.,
      21896.,  53512.,  85128.,  116744., 148360., 179976., 211592., 243208.,
      274824., 306440., 338056., 369672., 401288., 432904., 464520., 496136.,
      22032.,  53904.,  85776.,  117648., 149520., 181392., 213264., 245136.,
      277008., 308880., 340752., 372624., 404496., 436368., 468240., 500112.,
      22168.,  54296.,  86424.,  118552., 150680., 182808., 214936., 247064.,
      279192., 311320., 343448., 375576., 407704., 439832., 471960., 504088.,
      22304.,  54688.,  87072.,  119456., 151840., 184224., 216608., 248992.,
      281376., 313760., 346144., 378528., 410912., 443296., 475680., 508064.,
      22440.,  55080.,  87720.,  120360., 153000., 185640., 218280., 250920.,
      283560., 316200., 348840., 381480., 414120., 446760., 479400., 512040.};
  const int batches = 1;
  const int m = 15;
  const int k = 16;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M16xK14xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14665.,  35245.,  55825.,  76405.,  96985.,  117565., 138145., 158725.,
      179305., 199885., 220465., 241045., 261625., 282205., 14770.,  35546.,
      56322.,  77098.,  97874.,  118650., 139426., 160202., 180978., 201754.,
      222530., 243306., 264082., 284858., 14875.,  35847.,  56819.,  77791.,
      98763.,  119735., 140707., 161679., 182651., 203623., 224595., 245567.,
      266539., 287511., 14980.,  36148.,  57316.,  78484.,  99652.,  120820.,
      141988., 163156., 184324., 205492., 226660., 247828., 268996., 290164.,
      15085.,  36449.,  57813.,  79177.,  100541., 121905., 143269., 164633.,
      185997., 207361., 228725., 250089., 271453., 292817., 15190.,  36750.,
      58310.,  79870.,  101430., 122990., 144550., 166110., 187670., 209230.,
      230790., 252350., 273910., 295470., 15295.,  37051.,  58807.,  80563.,
      102319., 124075., 145831., 167587., 189343., 211099., 232855., 254611.,
      276367., 298123., 15400.,  37352.,  59304.,  81256.,  103208., 125160.,
      147112., 169064., 191016., 212968., 234920., 256872., 278824., 300776.,
      15505.,  37653.,  59801.,  81949.,  104097., 126245., 148393., 170541.,
      192689., 214837., 236985., 259133., 281281., 303429., 15610.,  37954.,
      60298.,  82642.,  104986., 127330., 149674., 172018., 194362., 216706.,
      239050., 261394., 283738., 306082., 15715.,  38255.,  60795.,  83335.,
      105875., 128415., 150955., 173495., 196035., 218575., 241115., 263655.,
      286195., 308735., 15820.,  38556.,  61292.,  84028.,  106764., 129500.,
      152236., 174972., 197708., 220444., 243180., 265916., 288652., 311388.,
      15925.,  38857.,  61789.,  84721.,  107653., 130585., 153517., 176449.,
      199381., 222313., 245245., 268177., 291109., 314041., 16030.,  39158.,
      62286.,  85414.,  108542., 131670., 154798., 177926., 201054., 224182.,
      247310., 270438., 293566., 316694., 16135.,  39459.,  62783.,  86107.,
      109431., 132755., 156079., 179403., 202727., 226051., 249375., 272699.,
      296023., 319347., 16240.,  39760.,  63280.,  86800.,  110320., 133840.,
      157360., 180880., 204400., 227920., 251440., 274960., 298480., 322000.};
  const int batches = 1;
  const int m = 16;
  const int k = 14;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M16xK14xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14665.,  35245.,  55825.,  76405.,  96985.,  117565., 138145., 158725.,
      179305., 199885., 220465., 241045., 261625., 282205., 302785., 14770.,
      35546.,  56322.,  77098.,  97874.,  118650., 139426., 160202., 180978.,
      201754., 222530., 243306., 264082., 284858., 305634., 14875.,  35847.,
      56819.,  77791.,  98763.,  119735., 140707., 161679., 182651., 203623.,
      224595., 245567., 266539., 287511., 308483., 14980.,  36148.,  57316.,
      78484.,  99652.,  120820., 141988., 163156., 184324., 205492., 226660.,
      247828., 268996., 290164., 311332., 15085.,  36449.,  57813.,  79177.,
      100541., 121905., 143269., 164633., 185997., 207361., 228725., 250089.,
      271453., 292817., 314181., 15190.,  36750.,  58310.,  79870.,  101430.,
      122990., 144550., 166110., 187670., 209230., 230790., 252350., 273910.,
      295470., 317030., 15295.,  37051.,  58807.,  80563.,  102319., 124075.,
      145831., 167587., 189343., 211099., 232855., 254611., 276367., 298123.,
      319879., 15400.,  37352.,  59304.,  81256.,  103208., 125160., 147112.,
      169064., 191016., 212968., 234920., 256872., 278824., 300776., 322728.,
      15505.,  37653.,  59801.,  81949.,  104097., 126245., 148393., 170541.,
      192689., 214837., 236985., 259133., 281281., 303429., 325577., 15610.,
      37954.,  60298.,  82642.,  104986., 127330., 149674., 172018., 194362.,
      216706., 239050., 261394., 283738., 306082., 328426., 15715.,  38255.,
      60795.,  83335.,  105875., 128415., 150955., 173495., 196035., 218575.,
      241115., 263655., 286195., 308735., 331275., 15820.,  38556.,  61292.,
      84028.,  106764., 129500., 152236., 174972., 197708., 220444., 243180.,
      265916., 288652., 311388., 334124., 15925.,  38857.,  61789.,  84721.,
      107653., 130585., 153517., 176449., 199381., 222313., 245245., 268177.,
      291109., 314041., 336973., 16030.,  39158.,  62286.,  85414.,  108542.,
      131670., 154798., 177926., 201054., 224182., 247310., 270438., 293566.,
      316694., 339822., 16135.,  39459.,  62783.,  86107.,  109431., 132755.,
      156079., 179403., 202727., 226051., 249375., 272699., 296023., 319347.,
      342671., 16240.,  39760.,  63280.,  86800.,  110320., 133840., 157360.,
      180880., 204400., 227920., 251440., 274960., 298480., 322000., 345520.};
  const int batches = 1;
  const int m = 16;
  const int k = 14;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M16xK14xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14665.,  35245.,  55825.,  76405.,  96985.,  117565., 138145., 158725.,
      179305., 199885., 220465., 241045., 261625., 282205., 302785., 323365.,
      14770.,  35546.,  56322.,  77098.,  97874.,  118650., 139426., 160202.,
      180978., 201754., 222530., 243306., 264082., 284858., 305634., 326410.,
      14875.,  35847.,  56819.,  77791.,  98763.,  119735., 140707., 161679.,
      182651., 203623., 224595., 245567., 266539., 287511., 308483., 329455.,
      14980.,  36148.,  57316.,  78484.,  99652.,  120820., 141988., 163156.,
      184324., 205492., 226660., 247828., 268996., 290164., 311332., 332500.,
      15085.,  36449.,  57813.,  79177.,  100541., 121905., 143269., 164633.,
      185997., 207361., 228725., 250089., 271453., 292817., 314181., 335545.,
      15190.,  36750.,  58310.,  79870.,  101430., 122990., 144550., 166110.,
      187670., 209230., 230790., 252350., 273910., 295470., 317030., 338590.,
      15295.,  37051.,  58807.,  80563.,  102319., 124075., 145831., 167587.,
      189343., 211099., 232855., 254611., 276367., 298123., 319879., 341635.,
      15400.,  37352.,  59304.,  81256.,  103208., 125160., 147112., 169064.,
      191016., 212968., 234920., 256872., 278824., 300776., 322728., 344680.,
      15505.,  37653.,  59801.,  81949.,  104097., 126245., 148393., 170541.,
      192689., 214837., 236985., 259133., 281281., 303429., 325577., 347725.,
      15610.,  37954.,  60298.,  82642.,  104986., 127330., 149674., 172018.,
      194362., 216706., 239050., 261394., 283738., 306082., 328426., 350770.,
      15715.,  38255.,  60795.,  83335.,  105875., 128415., 150955., 173495.,
      196035., 218575., 241115., 263655., 286195., 308735., 331275., 353815.,
      15820.,  38556.,  61292.,  84028.,  106764., 129500., 152236., 174972.,
      197708., 220444., 243180., 265916., 288652., 311388., 334124., 356860.,
      15925.,  38857.,  61789.,  84721.,  107653., 130585., 153517., 176449.,
      199381., 222313., 245245., 268177., 291109., 314041., 336973., 359905.,
      16030.,  39158.,  62286.,  85414.,  108542., 131670., 154798., 177926.,
      201054., 224182., 247310., 270438., 293566., 316694., 339822., 362950.,
      16135.,  39459.,  62783.,  86107.,  109431., 132755., 156079., 179403.,
      202727., 226051., 249375., 272699., 296023., 319347., 342671., 365995.,
      16240.,  39760.,  63280.,  86800.,  110320., 133840., 157360., 180880.,
      204400., 227920., 251440., 274960., 298480., 322000., 345520., 369040.};
  const int batches = 1;
  const int m = 16;
  const int k = 14;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M16xK15xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      18040.,  43465.,  68890.,  94315.,  119740., 145165., 170590., 196015.,
      221440., 246865., 272290., 297715., 323140., 348565., 18160.,  43810.,
      69460.,  95110.,  120760., 146410., 172060., 197710., 223360., 249010.,
      274660., 300310., 325960., 351610., 18280.,  44155.,  70030.,  95905.,
      121780., 147655., 173530., 199405., 225280., 251155., 277030., 302905.,
      328780., 354655., 18400.,  44500.,  70600.,  96700.,  122800., 148900.,
      175000., 201100., 227200., 253300., 279400., 305500., 331600., 357700.,
      18520.,  44845.,  71170.,  97495.,  123820., 150145., 176470., 202795.,
      229120., 255445., 281770., 308095., 334420., 360745., 18640.,  45190.,
      71740.,  98290.,  124840., 151390., 177940., 204490., 231040., 257590.,
      284140., 310690., 337240., 363790., 18760.,  45535.,  72310.,  99085.,
      125860., 152635., 179410., 206185., 232960., 259735., 286510., 313285.,
      340060., 366835., 18880.,  45880.,  72880.,  99880.,  126880., 153880.,
      180880., 207880., 234880., 261880., 288880., 315880., 342880., 369880.,
      19000.,  46225.,  73450.,  100675., 127900., 155125., 182350., 209575.,
      236800., 264025., 291250., 318475., 345700., 372925., 19120.,  46570.,
      74020.,  101470., 128920., 156370., 183820., 211270., 238720., 266170.,
      293620., 321070., 348520., 375970., 19240.,  46915.,  74590.,  102265.,
      129940., 157615., 185290., 212965., 240640., 268315., 295990., 323665.,
      351340., 379015., 19360.,  47260.,  75160.,  103060., 130960., 158860.,
      186760., 214660., 242560., 270460., 298360., 326260., 354160., 382060.,
      19480.,  47605.,  75730.,  103855., 131980., 160105., 188230., 216355.,
      244480., 272605., 300730., 328855., 356980., 385105., 19600.,  47950.,
      76300.,  104650., 133000., 161350., 189700., 218050., 246400., 274750.,
      303100., 331450., 359800., 388150., 19720.,  48295.,  76870.,  105445.,
      134020., 162595., 191170., 219745., 248320., 276895., 305470., 334045.,
      362620., 391195., 19840.,  48640.,  77440.,  106240., 135040., 163840.,
      192640., 221440., 250240., 279040., 307840., 336640., 365440., 394240.};
  const int batches = 1;
  const int m = 16;
  const int k = 15;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M16xK15xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      18040.,  43465.,  68890.,  94315.,  119740., 145165., 170590., 196015.,
      221440., 246865., 272290., 297715., 323140., 348565., 373990., 18160.,
      43810.,  69460.,  95110.,  120760., 146410., 172060., 197710., 223360.,
      249010., 274660., 300310., 325960., 351610., 377260., 18280.,  44155.,
      70030.,  95905.,  121780., 147655., 173530., 199405., 225280., 251155.,
      277030., 302905., 328780., 354655., 380530., 18400.,  44500.,  70600.,
      96700.,  122800., 148900., 175000., 201100., 227200., 253300., 279400.,
      305500., 331600., 357700., 383800., 18520.,  44845.,  71170.,  97495.,
      123820., 150145., 176470., 202795., 229120., 255445., 281770., 308095.,
      334420., 360745., 387070., 18640.,  45190.,  71740.,  98290.,  124840.,
      151390., 177940., 204490., 231040., 257590., 284140., 310690., 337240.,
      363790., 390340., 18760.,  45535.,  72310.,  99085.,  125860., 152635.,
      179410., 206185., 232960., 259735., 286510., 313285., 340060., 366835.,
      393610., 18880.,  45880.,  72880.,  99880.,  126880., 153880., 180880.,
      207880., 234880., 261880., 288880., 315880., 342880., 369880., 396880.,
      19000.,  46225.,  73450.,  100675., 127900., 155125., 182350., 209575.,
      236800., 264025., 291250., 318475., 345700., 372925., 400150., 19120.,
      46570.,  74020.,  101470., 128920., 156370., 183820., 211270., 238720.,
      266170., 293620., 321070., 348520., 375970., 403420., 19240.,  46915.,
      74590.,  102265., 129940., 157615., 185290., 212965., 240640., 268315.,
      295990., 323665., 351340., 379015., 406690., 19360.,  47260.,  75160.,
      103060., 130960., 158860., 186760., 214660., 242560., 270460., 298360.,
      326260., 354160., 382060., 409960., 19480.,  47605.,  75730.,  103855.,
      131980., 160105., 188230., 216355., 244480., 272605., 300730., 328855.,
      356980., 385105., 413230., 19600.,  47950.,  76300.,  104650., 133000.,
      161350., 189700., 218050., 246400., 274750., 303100., 331450., 359800.,
      388150., 416500., 19720.,  48295.,  76870.,  105445., 134020., 162595.,
      191170., 219745., 248320., 276895., 305470., 334045., 362620., 391195.,
      419770., 19840.,  48640.,  77440.,  106240., 135040., 163840., 192640.,
      221440., 250240., 279040., 307840., 336640., 365440., 394240., 423040.};
  const int batches = 1;
  const int m = 16;
  const int k = 15;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M16xK15xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      18040.,  43465.,  68890.,  94315.,  119740., 145165., 170590., 196015.,
      221440., 246865., 272290., 297715., 323140., 348565., 373990., 399415.,
      18160.,  43810.,  69460.,  95110.,  120760., 146410., 172060., 197710.,
      223360., 249010., 274660., 300310., 325960., 351610., 377260., 402910.,
      18280.,  44155.,  70030.,  95905.,  121780., 147655., 173530., 199405.,
      225280., 251155., 277030., 302905., 328780., 354655., 380530., 406405.,
      18400.,  44500.,  70600.,  96700.,  122800., 148900., 175000., 201100.,
      227200., 253300., 279400., 305500., 331600., 357700., 383800., 409900.,
      18520.,  44845.,  71170.,  97495.,  123820., 150145., 176470., 202795.,
      229120., 255445., 281770., 308095., 334420., 360745., 387070., 413395.,
      18640.,  45190.,  71740.,  98290.,  124840., 151390., 177940., 204490.,
      231040., 257590., 284140., 310690., 337240., 363790., 390340., 416890.,
      18760.,  45535.,  72310.,  99085.,  125860., 152635., 179410., 206185.,
      232960., 259735., 286510., 313285., 340060., 366835., 393610., 420385.,
      18880.,  45880.,  72880.,  99880.,  126880., 153880., 180880., 207880.,
      234880., 261880., 288880., 315880., 342880., 369880., 396880., 423880.,
      19000.,  46225.,  73450.,  100675., 127900., 155125., 182350., 209575.,
      236800., 264025., 291250., 318475., 345700., 372925., 400150., 427375.,
      19120.,  46570.,  74020.,  101470., 128920., 156370., 183820., 211270.,
      238720., 266170., 293620., 321070., 348520., 375970., 403420., 430870.,
      19240.,  46915.,  74590.,  102265., 129940., 157615., 185290., 212965.,
      240640., 268315., 295990., 323665., 351340., 379015., 406690., 434365.,
      19360.,  47260.,  75160.,  103060., 130960., 158860., 186760., 214660.,
      242560., 270460., 298360., 326260., 354160., 382060., 409960., 437860.,
      19480.,  47605.,  75730.,  103855., 131980., 160105., 188230., 216355.,
      244480., 272605., 300730., 328855., 356980., 385105., 413230., 441355.,
      19600.,  47950.,  76300.,  104650., 133000., 161350., 189700., 218050.,
      246400., 274750., 303100., 331450., 359800., 388150., 416500., 444850.,
      19720.,  48295.,  76870.,  105445., 134020., 162595., 191170., 219745.,
      248320., 276895., 305470., 334045., 362620., 391195., 419770., 448345.,
      19840.,  48640.,  77440.,  106240., 135040., 163840., 192640., 221440.,
      250240., 279040., 307840., 336640., 365440., 394240., 423040., 451840.};
  const int batches = 1;
  const int m = 16;
  const int k = 15;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M16xK16xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21896.,  52872.,  83848.,  114824., 145800., 176776., 207752., 238728.,
      269704., 300680., 331656., 362632., 393608., 424584., 22032.,  53264.,
      84496.,  115728., 146960., 178192., 209424., 240656., 271888., 303120.,
      334352., 365584., 396816., 428048., 22168.,  53656.,  85144.,  116632.,
      148120., 179608., 211096., 242584., 274072., 305560., 337048., 368536.,
      400024., 431512., 22304.,  54048.,  85792.,  117536., 149280., 181024.,
      212768., 244512., 276256., 308000., 339744., 371488., 403232., 434976.,
      22440.,  54440.,  86440.,  118440., 150440., 182440., 214440., 246440.,
      278440., 310440., 342440., 374440., 406440., 438440., 22576.,  54832.,
      87088.,  119344., 151600., 183856., 216112., 248368., 280624., 312880.,
      345136., 377392., 409648., 441904., 22712.,  55224.,  87736.,  120248.,
      152760., 185272., 217784., 250296., 282808., 315320., 347832., 380344.,
      412856., 445368., 22848.,  55616.,  88384.,  121152., 153920., 186688.,
      219456., 252224., 284992., 317760., 350528., 383296., 416064., 448832.,
      22984.,  56008.,  89032.,  122056., 155080., 188104., 221128., 254152.,
      287176., 320200., 353224., 386248., 419272., 452296., 23120.,  56400.,
      89680.,  122960., 156240., 189520., 222800., 256080., 289360., 322640.,
      355920., 389200., 422480., 455760., 23256.,  56792.,  90328.,  123864.,
      157400., 190936., 224472., 258008., 291544., 325080., 358616., 392152.,
      425688., 459224., 23392.,  57184.,  90976.,  124768., 158560., 192352.,
      226144., 259936., 293728., 327520., 361312., 395104., 428896., 462688.,
      23528.,  57576.,  91624.,  125672., 159720., 193768., 227816., 261864.,
      295912., 329960., 364008., 398056., 432104., 466152., 23664.,  57968.,
      92272.,  126576., 160880., 195184., 229488., 263792., 298096., 332400.,
      366704., 401008., 435312., 469616., 23800.,  58360.,  92920.,  127480.,
      162040., 196600., 231160., 265720., 300280., 334840., 369400., 403960.,
      438520., 473080., 23936.,  58752.,  93568.,  128384., 163200., 198016.,
      232832., 267648., 302464., 337280., 372096., 406912., 441728., 476544.};
  const int batches = 1;
  const int m = 16;
  const int k = 16;
  const int n = 14;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M16xK16xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21896.,  52872.,  83848.,  114824., 145800., 176776., 207752., 238728.,
      269704., 300680., 331656., 362632., 393608., 424584., 455560., 22032.,
      53264.,  84496.,  115728., 146960., 178192., 209424., 240656., 271888.,
      303120., 334352., 365584., 396816., 428048., 459280., 22168.,  53656.,
      85144.,  116632., 148120., 179608., 211096., 242584., 274072., 305560.,
      337048., 368536., 400024., 431512., 463000., 22304.,  54048.,  85792.,
      117536., 149280., 181024., 212768., 244512., 276256., 308000., 339744.,
      371488., 403232., 434976., 466720., 22440.,  54440.,  86440.,  118440.,
      150440., 182440., 214440., 246440., 278440., 310440., 342440., 374440.,
      406440., 438440., 470440., 22576.,  54832.,  87088.,  119344., 151600.,
      183856., 216112., 248368., 280624., 312880., 345136., 377392., 409648.,
      441904., 474160., 22712.,  55224.,  87736.,  120248., 152760., 185272.,
      217784., 250296., 282808., 315320., 347832., 380344., 412856., 445368.,
      477880., 22848.,  55616.,  88384.,  121152., 153920., 186688., 219456.,
      252224., 284992., 317760., 350528., 383296., 416064., 448832., 481600.,
      22984.,  56008.,  89032.,  122056., 155080., 188104., 221128., 254152.,
      287176., 320200., 353224., 386248., 419272., 452296., 485320., 23120.,
      56400.,  89680.,  122960., 156240., 189520., 222800., 256080., 289360.,
      322640., 355920., 389200., 422480., 455760., 489040., 23256.,  56792.,
      90328.,  123864., 157400., 190936., 224472., 258008., 291544., 325080.,
      358616., 392152., 425688., 459224., 492760., 23392.,  57184.,  90976.,
      124768., 158560., 192352., 226144., 259936., 293728., 327520., 361312.,
      395104., 428896., 462688., 496480., 23528.,  57576.,  91624.,  125672.,
      159720., 193768., 227816., 261864., 295912., 329960., 364008., 398056.,
      432104., 466152., 500200., 23664.,  57968.,  92272.,  126576., 160880.,
      195184., 229488., 263792., 298096., 332400., 366704., 401008., 435312.,
      469616., 503920., 23800.,  58360.,  92920.,  127480., 162040., 196600.,
      231160., 265720., 300280., 334840., 369400., 403960., 438520., 473080.,
      507640., 23936.,  58752.,  93568.,  128384., 163200., 198016., 232832.,
      267648., 302464., 337280., 372096., 406912., 441728., 476544., 511360.};
  const int batches = 1;
  const int m = 16;
  const int k = 16;
  const int n = 15;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta0TrueTrue, M16xK16xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21896.,  52872.,  83848.,  114824., 145800., 176776., 207752., 238728.,
      269704., 300680., 331656., 362632., 393608., 424584., 455560., 486536.,
      22032.,  53264.,  84496.,  115728., 146960., 178192., 209424., 240656.,
      271888., 303120., 334352., 365584., 396816., 428048., 459280., 490512.,
      22168.,  53656.,  85144.,  116632., 148120., 179608., 211096., 242584.,
      274072., 305560., 337048., 368536., 400024., 431512., 463000., 494488.,
      22304.,  54048.,  85792.,  117536., 149280., 181024., 212768., 244512.,
      276256., 308000., 339744., 371488., 403232., 434976., 466720., 498464.,
      22440.,  54440.,  86440.,  118440., 150440., 182440., 214440., 246440.,
      278440., 310440., 342440., 374440., 406440., 438440., 470440., 502440.,
      22576.,  54832.,  87088.,  119344., 151600., 183856., 216112., 248368.,
      280624., 312880., 345136., 377392., 409648., 441904., 474160., 506416.,
      22712.,  55224.,  87736.,  120248., 152760., 185272., 217784., 250296.,
      282808., 315320., 347832., 380344., 412856., 445368., 477880., 510392.,
      22848.,  55616.,  88384.,  121152., 153920., 186688., 219456., 252224.,
      284992., 317760., 350528., 383296., 416064., 448832., 481600., 514368.,
      22984.,  56008.,  89032.,  122056., 155080., 188104., 221128., 254152.,
      287176., 320200., 353224., 386248., 419272., 452296., 485320., 518344.,
      23120.,  56400.,  89680.,  122960., 156240., 189520., 222800., 256080.,
      289360., 322640., 355920., 389200., 422480., 455760., 489040., 522320.,
      23256.,  56792.,  90328.,  123864., 157400., 190936., 224472., 258008.,
      291544., 325080., 358616., 392152., 425688., 459224., 492760., 526296.,
      23392.,  57184.,  90976.,  124768., 158560., 192352., 226144., 259936.,
      293728., 327520., 361312., 395104., 428896., 462688., 496480., 530272.,
      23528.,  57576.,  91624.,  125672., 159720., 193768., 227816., 261864.,
      295912., 329960., 364008., 398056., 432104., 466152., 500200., 534248.,
      23664.,  57968.,  92272.,  126576., 160880., 195184., 229488., 263792.,
      298096., 332400., 366704., 401008., 435312., 469616., 503920., 538224.,
      23800.,  58360.,  92920.,  127480., 162040., 196600., 231160., 265720.,
      300280., 334840., 369400., 403960., 438520., 473080., 507640., 542200.,
      23936.,  58752.,  93568.,  128384., 163200., 198016., 232832., 267648.,
      302464., 337280., 372096., 406912., 441728., 476544., 511360., 546176.};
  const int batches = 1;
  const int m = 16;
  const int k = 16;
  const int n = 16;
  const auto beta = static_cast<DataType>(0);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}